"""
函数式编程的应用

    适用于： 多个函数，主体结构相同，核心算法不同
"""

list1 = [24,4,6,56,7,8]

# 1. 定义函数找出第一个大于10的数字
def find_lt10():
    for num in list1:
        if num > 10:
            return num
    return None

# 2. 定义函数找出第一个大于50的数字
def find_lt50():
    for num in list1:
        if num > 50:
            return num
    return None

# 传统方式实现
print(find_lt10())
print(find_lt50())

print('=' * 30)
# 函数式编程如何实现

# 1. 回调函数
# 定义回调函数  Callbacks  将不同核心的算法单独定义在函数中
# 回调函数： 此函数作为另一个参数的实参进行传递，先传递，后在恰当的时候调用

# 2. 高阶函数
# 定义高阶函数 Higher Order Functions：通过参数抽象回调函数
# 高阶函数：接收函数作为参数的函数就是高阶函数
# 高阶函数：返回一个函数作为结果的函数就是高阶函数
# 一句话概括：使用函数（可以作为参数，可以作为返回值）的函数就是高阶函数

# 第一步：定义回调函数
def condition01(item):
    return item > 10

def condition02(item):
    return item > 50

# 第二步：定义高阶函数
def find_num(condition):
    print(condition)  # 回调函数的地址
    for num in list1:
        if condition(num):
            return num
    return None

# 第三步：调用高阶函数
print(find_num(condition02))